Method and system for reducing overflows in a computer graphics system

ABSTRACT

A method and system for providing a graphical image on a display of a system is disclosed. The graphical image is provided from data describing a plurality of primitives. The display includes a plurality of pixels. The method and system include providing a plurality of variable-sized bins containing the plurality of primitives and rendering the plurality of primitives by rendering each of the plurality of variable-sized bins variable-sized bin by variable-sized bin.

FIELD OF THE INVENTION

[0001] The present invention relates to graphics processing in acomputer system, and more particularly to a method and system for moreefficiently rendering a graphical image.

BACKGROUND OF THE INVENTION

[0002] A conventional computer graphics system can display a graphicalimage on a display. The display includes a plurality of displayselements, known as pixels, typically arranged in a grid. In order todisplay objects, the conventional computer graphics system typicallybreaks the objects into a plurality of polygons. The conventional systemthen typically renders the polygons in a particular order. For athree-dimensional scene, the polygons are generally rendered from backto front as measured from the viewing plane of the display. Similarly, atwo-dimensional scene can be displayed where polygons are rendered basedon their layer. Shallower layers occlude deeper layers.

[0003] For example, FIG. 1 is a block diagram of a display 1 depicting agraphical image The display includes a plurality of pixels 8, only oneof which is labeled. The graphical image includes primitives 2, 3, 4, 5,and 6 which may be part of one or more objects. Each of the primitives2, 3, 4, 5, and 6 may cover several pixels and includes a plurality offragments. Each fragment includes data for a pixel intersected by thecorresponding primitive. Thus, a fragment may include data relating tothe color, texture, α values, and depth values for a particularprimitive and a particular pixel.

[0004] One conventional method used in rendering the graphical imagerenders the image primitive by primitive in a particular order. For athree-dimensional scene, the primitives are generally rendered from backto front as measured from the viewing plane of the display. Similarly, atwo-dimensional scene can be displayed where primitives are renderedbased on their layer. Shallower layers occlude deeper layers. Forexample, the primitive 2 might be rendered first, followed in order byprimitives 3, 4, 5, and 6.

[0005]FIG. 2A depicts another conventional method 10 for rendering agraphical image. FIG. 2B depicts a display 20 including the primitives2, 3, 4, 5, and 6 which are rendered using the conventional method 10.Referring to FIGS. 2A and 2B, in order to render the graphic image,portions of the display 1 are rendered one at a time. Thus, a pluralityof tiles, each tile having a fixed size, is defined, via step 12. A tileis typically a two-dimensional rectangle containing n×m pixels. Thetiles 21, 22, 23, 24, 25, 26, 27, 28, and 29 are depicted in the display20. The primitives 2, 3, 4, 5, and 6, or portions thereof, are thenrendered tile by tile and primitive by primitive. For example, theportion of the primitive 2 in tile 21 is rendered first. When tile 21has completed rendering, the portion of the primitive 4 in tile 22 isrendered. When tile 22 is completed, the portions of the primitives 4and 6 in tile 23 are rendered. This process continues, rendering thegraphical image primitive by primitive and tile by tile, until allprimitives in all tiles have been rendered.

[0006] Although these conventional methods function, one of ordinaryskill in the art will readily realize that it is desirable to providedata for an image in raster order. Furthermore, it would desirable ifthe image is efficiently rendered. Consequently, STELLAR SEMICONDUCTORof San Jose, Calif. developed a system for rendering a graphical imagepixel by pixel, in raster order. Raster order is from left to right andtop to bottom across the display 1. This system is described in U.S.patent application Ser. No. 08/624,261, entitled “METHOD AND APPARATUSFOR IDENTIFYING AN ELIMINATING THREE-DIMENSIONAL OBJECTS VISUALLYOBSTRUCTED FORM A PLANAR SURFACE” filed on Mar. 29, 1996 and assigned tothe assignee of the present application and in co-pending U.S. patentapplication Ser. No. 08/624,260, entitled “GRAPHICS PROCESSORS, SYSTEMAND METHOD FOR GENERATING SCREEN PIXELS IN RASTER ORDER UTILIZING ASINGLE INTERPOLATOR” filed on Mar. 29, 1996 and assigned to the assigneeof the present application.

[0007]FIG. 3 depicts a high-level block diagram of one embodiment ofsuch a computer graphics system 50. The system 50 includes a centralprocessing unit (CPU) 52, a display 54, a user interface 56 such as akeyboard or mouse or other communicating device, a memory 58, and animage generating unit 60 coupled with one or more buses 58. The display54 includes a display, such as the display 1. The display 14 alsoincludes a display memory 55 to which data for pixels are written priorto being shown on the display 1. In order to display graphical images,the objects are broken into polygons to be used in rendering theobjects. In a preferred embodiment, the polygons are rendered in rasterorder. That is, portions of the polygons are rendered pixel by pixel inthe order of the pixels in the display 54.

[0008] The image generating unit 60 is used in rendering the graphicalimage. The image generating unit includes an interface 61 connected tothe bus 58. The interface 61 transmits data to a data processing unit62. The block of processors 64 identifies data describing portions ofprimitives (“intersecting primitives”) which intersect the areaextending along a z-axis from a selected pixel in an x-y planecorresponding to a screen of the display 14. The block of processors 64may include a number of processors, allowing intersecting primitives tobe processed in parallel. By processing the primitives in parallel, theblock of processors 64 can provide an indication of the fragments thatintersect pixels currently being processed in a particular scan line. Anobstructed object identifier/removal unit (Quick Z) 66 receives at leasta portion of the fragment from each intersecting polygon associated withthe selected pixel and removes portions of the fragments forintersecting polygons that are obstructed.

[0009] The interpolator 68 receives the remaining fragments for theintersecting polygons for the selected pixel and interpolates the data,including interpolating texture, color, and alpha values for thefragment. The interpolator 68 also provides a coverage mask for eachfragment. The coverage mask indicates the portion of the pixel that thefragment covers. The fragments for remaining intersecting polygons areprovided by the interpolator 68 to a hardware sorter 70. The hardwaresorter 70 sorts the fragments for the intersecting polygons based on thevalue of a key such as the z value, or depth value, for the fragment.

[0010] An antialiasing/blending/accumulating unit 72 performsantialiasing using the mask provided by the interpolator 68. Theantialiasing unit 72 may multiple units used in antialiasing,accumulating data, and blending data. The antialiased data is providedto the display 14 pixel by pixel in raster order.

[0011] Although the above-mentioned co-pending applications functionwell for their intended purpose, the processors in the block ofprocessors 64 may overflow. In order to render the images in rasterorder, a number of the primitives intersecting pixels in a particularscan line (a row of pixels on the display 1) are processed in parallel.There are also a finite number of processors in the block of processors64. For example, in one embodiment, sixty-four processors are providedin the block of processor block 64. When a particular scan line containsa large number of primitives, more primitives than processors in theblock of processors 64 may be attempted to be processed in parallel. Theblock of processors 64 may then overflow. Such an overflow isundesirable. Furthermore, efficient rendering of the graphical image isdesired.

[0012] Accordingly, what is needed is a system and method forefficiently rendering a graphical image. It would be desirable if anoverflow of processors can be avoided. The present invention addressessuch a need.

SUMMARY OF THE INVENTION

[0013] The present invention provides a method and system for providinga graphical image on a display of a system. The graphical image isprovided from data describing a plurality of to primitives. The displayincludes a plurality of pixels. The method and system comprise providinga plurality variable-sized bins containing the plurality of primitivesand rendering the plurality of primitives by rendering each of theplurality of variable-sized bins variable-sized bin by variable-sizedbin. In a first aspect, the system also includes a plurality ofprocessors for processing a portion of the plurality of primitives inparallel. In this aspect, the variable-sized bin providing step furtherincludes the steps of storing the plurality of primitives in a pluralityof bins and determining if a part of a portion of the plurality of binscan be combined without causing the plurality of processors to overflow.In this aspect, the method and system also comprise combining the partof the portion of the plurality of bins to provide the plurality ofvariable-sized bins if the part of the portion of the plurality of binscan be combined without causing the plurality of processors to overflow.The plurality of variable-sized bins can include fewer bins than theplurality of bins. In another aspect, the method and system furtherinclude determining a plurality of bins for a previous frame andproviding the plurality of bins containing the plurality of primitives.

[0014] According to the system and method disclosed herein, the presentinvention efficiently separates the graphical image into variable-sizedbins that can be separately rendered without overflowing the system.

BRIEF DESCRIPTION OF THE DRAWINGS

[0015]FIG. 1 is a diagram of a display including a graphical image.

[0016]FIG. 2A is a high-level flow chart of a conventional method forrendering a graphical image.

[0017]FIG. 2B is a diagram of the display when the conventional methodis used to render the graphical image.

[0018]FIG. 3 is a high-level block diagram of a computer graphics systemin which the present invention can be used.

[0019]FIG. 4A is a high-level flow chart of one embodiment method forrendering a graphical image in accordance with the present invention.

[0020]FIG. 4B is a diagram of one way in which a display could bedivided in accordance with the present invention.

[0021]FIG. 5A is a flow chart of a first embodiment of a method forproviding variable-sized bins in accordance with the present invention.

[0022]FIG. 5B is a diagram of one way in which a display could bedivided in accordance when the first embodiment of a method inaccordance with the present invention for providing variable-sized bins.

[0023]FIG. 5C is a diagram of how the bins are provided and combined inaccordance when the first embodiment of a method in accordance with thepresent invention for providing variable-sized bins.

[0024]FIG. 6A is a more detailed flow chart of a preferred version ofthe first embodiment of a method for providing variable-sized bins inaccordance with the present invention.

[0025]FIG. 6B is a diagram of how the bins are provided and combined inaccordance when the preferred version of the first embodiment of amethod in accordance with the present invention for providingvariable-sized bins.

[0026]FIG. 7A is a flow chart of a second embodiment of a method forproviding variable-sized bins in accordance with the present invention.

[0027]FIG. 7B is a diagram of one way in which a display could bedivided in accordance when the second embodiment of a method inaccordance with the present invention for providing variable-sized bins.

[0028]FIG. 7C is a diagram of how the bins are provided and combined inaccordance when the second embodiment of a method in accordance with thepresent invention for providing variable-sized bins.

[0029]FIG. 8A is a more detailed flow chart of the second embodiment ofa method for providing variable-sized bins in accordance with thepresent invention.

[0030]FIG. 8B is a diagram of how the bins are provided and combined inaccordance when the preferred version of the second embodiment of amethod in accordance with the present invention for providingvariable-sized bins.

DETAILED DESCRIPTION OF THE INVENTION

[0031] The present invention relates to an improvement in processing ofgraphical images. The following description is presented to enable oneof ordinary skill in the art to make and use the invention and isprovided in the context of a patent application and its requirements.Various modifications to the preferred embodiment will be readilyapparent to those skilled in the art and the generic principles hereinmay be applied to other embodiments. Thus, the present invention is notintended to be limited to the embodiment shown, but is to be accordedthe widest scope consistent with the principles and features describedherein.

[0032] As discussed above, FIG. 1 depicts a display 1 including agraphical image. The graphical image includes primitives 2, 3, 4, 5, and6 which may be part of one or more objects. Each of the primitives 2, 3,4, 5, and 6 may intersect several pixels and includes a plurality offragments. Each fragment includes data for a pixel intersected by thecorresponding primitive. Thus, a fragment may include data relating tothe color, texture, α values, and depth values for a particularprimitive and a particular pixel.

[0033] In order to render the graphical image, conventional computergraphics systems may employ a variety of methods. In one conventionalsystem, the graphical image is rendered primitive by primitive. Forexample, the entire primitive 2 may be rendered first. The remainingprimitives would then be rendered primitive by primitive. Alternatively,a conventional computer graphics system could break the display 1 intoseveral tile of fixed, typically equal, size. The conventional systemthen renders the graphical image tile by tile. Thus, the portions ofeach primitive in a particular tile are rendered before a portion of theprimitives in another tile.

[0034] In order to improve the efficiency of memory use, a recentlydeveloped computer graphics system renders a graphical image pixel bypixel, in raster order. Thus, fragments for all of the primitivesintersecting a particular pixel are rendered, then the fragments forprimitives intersecting another pixel are rendered. Such a system 50 isdepicted in FIG. 2.

[0035] Although this method and system 50 depicted in and discussed inconjunction with FIG. 2 function effectively, the system 50 utilizes aplurality of processors in the block of processors 64. The processorsprocesses primitives intersecting a particular scan line in parallel.Preferably all of the primitives intersecting a scan line are processedin parallel. Because there are a finite number of processors, the numberof primitives intersecting a scan line can exceed the number ofprocessors. Consequently, the processors in the block of processors 64may overflow, which adversely affects system performance.

[0036] The present invention provides a method and system for providinga graphical image on a display of a system. The graphical image isprovided from data describing a plurality of primitives. The displayincludes a plurality of pixels. The method and system comprise providinga plurality variable-sized bins containing the plurality of primitivesand rendering the plurality of primitives by rendering each of theplurality of variable-sized bins variable-sized bin by variable-sizedbin. In a first aspect, the system also includes a plurality ofprocessors for processing a portion of the plurality of primitives inparallel. In this aspect, the variable-sized bin providing step furtherincludes the steps of storing the plurality of primitives in a pluralityof bins and determining if a part of a portion of the plurality of binscan be combined without causing the plurality of processors to overflow.In this aspect, the method and system also comprise combining the partof the portion of the plurality of bins to provide the plurality ofvariable-sized bins if the part of the portion of the plurality of binscan be combined without causing the plurality of processors to overflow.The plurality of variable-sized bins can include fewer bins than theplurality of bins. In another aspect, the method and system furtherinclude determining a plurality of bins for a previous frame andproviding the plurality of bins containing the plurality of primitives.

[0037] The present invention will be described in terms of beingimplemented in a particular system for a particular reason. However, oneof ordinary skill in the art will readily recognize that this method andsystem will operate effectively for other systems. Furthermore, thepresent inventions will be described in terms of specific algorithms.However, one of ordinary skill in the art will readily realize that thepresent invention is consistent with the use of other algorithms. Forexample, certain steps of the flow charts described herein could beperformed in another order, including in parallel. In addition, thepresent invention can be implemented in hardware, rather than insoftware. The present invention will also be described in the context ofa particular number and type of processors, sections, bins, andprimitives. The present invention will also be described in terms of aparticular overflow condition based on the number or processors.However, one of ordinary skill in the art will readily recognize thatthe present invention is consistent with another number and type ofprocessors, sections, bins, and primitives as well as a differentoverflow parameter.

[0038] To more particularly illustrate the method and system inaccordance with the present invention, refer now to FIG. 4A, depicting ahigh-level flow chart of one embodiment of method for rendering agraphical image in accordance with the present invention. The method ispreferably implemented on the system 50 depicted in FIG. 2. In apreferred embodiment, the method and system in accordance with thepresent invention is implemented by or include software that may bestored in the memory 59 and executed by the CPU 52. However, in anotherembodiment, the software could be stored elsewhere or executed byanother processor (not shown), such as one residing with the imagegeneration unit 60.

[0039] Referring now to FIG. 4A, a plurality of variable-sized binscontaining the primitives are provided, via step 102. A bin is variablesized when the section of the display (described below) to which the bincorresponds can vary in size. Preferably, the primitives intersecting aparticular variable-sized bin are stored in the variable-sized bin basedon the primitives' minimum y-value and whether or not the primitivescross the right boundary of the particular variable-sized bin. In apreferred embodiment, each of at least a portion of the variable-sizedbins includes few enough primitives so that the processors in the blockof processors 64 do not overflow. For example, if there are sixty-fourprimitives, then when possible, each variable-sized bin includes no morethan 64 primitives per scan line. However, the primitives allowed in aparticular variable-sized bin may depend on other criteria. Theprimitives are then rendered by rendering the variable-sized binsvariable-sized bin by variable-sized bin, via step 104. Also in apreferred embodiment, step 104 includes rendering each of thevariable-sized bins pixel by pixel in raster order. Thus, if only aportion of a primitive intersects a particular variable-sized bin, onlythat portion of the primitive is rendered when the particularvariable-sized bin is rendered. Thus, step 104 preferably includesproviding the primitives for a scan line in a variable-sized bin to theprocessors in the block of processors 64 of FIG. 3. The portions of theprimitives intersecting pixels within the scan line are then processedby the system 50.

[0040]FIG. 4B depicts a generalized view of a display 110 including agraphical image. The display 110 is analogous to the display 1 depictedin FIG. 1. Thus, the graphical image includes primitives 2, 3, 4, 5, and6. The graphical image has been broken into a plurality ofvariable-sized sections 112, 114, 116, 118 and 120. Each of thevariable-sized sections 112, 114, 116, 118, and 120 corresponds to oneof the variable-sized bins. One variable-sized bin stores data for theprimitive 2 and the primitive 3 for the section 112. Similarly a secondvariable-sized bin stores data for the primitive 2 and the primitive 3in the section 114. A third variable-sized bin stores data for theprimitive 4 and the primitive 6 intersecting the section 116. A fourthvariable-sized bin stores a data for the primitives 4, 5, and 6 in thesection 118. A fifth variable-sized bin corresponds to the last section120.

[0041]FIG. 5A depicts a more detailed flow chart of a first embodimentof a method 140 in accordance with the present invention for providingvariable-sized bins. The primitives are stored in a plurality of bins,via step 142, preferably in order based on the minimum y-value of theprimitives. Storing a primitive may include storing the desiredinformation for the primitive. Thus, the primitives are preferablystored from top to bottom along the display 1. Preferably, the bins areof the same size. The size of a bin is determined by the size of asection, discussed below, to which the bin corresponds. It is determinedwhether any portions of the bins, preferably adjacent bins, can becombined without violating an overflow parameter, via step 144. In apreferred embodiment, step 144 determines whether any of the bins, inits entirety, can be combined with another bin, in its entirety. Also ina preferred embodiment, the overflow parameter corresponds to anoverflow of the system. An overflow of the system occurs when there aremore primitives in a bin than there are processors in the block ofprocessors 64, depicted in FIG. 3. Referring back to FIG. 5A, theportions of bins that can be combined are then combined to provide thevariable sized bins, via step 146. In a preferred embodiment, step 146includes combining those bins, in there entirety, which step 144determined could be combined without overflowing the processors toprovide the variable-sized bins. Also in a preferred embodiment,portions of bins can be combined horizontally if the resulting bincrosses the entire display. The variable-sized bins are the provided forrendering, via step 148. Preferably, step 148 includes providing adisplay list including the primitives in each of the variable-sized bin,variable-sized bin by variable-sized bin. In one embodiment, steps 146and 148 can be provided in a single step. Thus, the combining of binscould take place by ordering the primitives appropriately in the displaylist. The variable-sized bins may then be rendered pixel by pixel inraster order.

[0042] For an example of how the method 140 functions, refer to FIGS.5A-5C. For clarity, it is presumed that there are only three processorsin the block of processors 64, depicted in FIG. 2. Thus, the overflowparameter is three. FIG. 5B depicts one way in which the display 150 canbe divided into sections when the method 140 is used. The display 150corresponds to the display 1 and, therefore, includes primitives 2, 3,4, 5, and 6. FIG. 5C depicts the bins 161-166 provided and combined byone preferred embodiment of the method 140. Preferably, the bins 161-166are preferably of the same size. Thus, the sections 151-156 to which thebins 161-166 correspond are preferably of the same size. The display 150is thus broken into sections 151, 152, 153, 154, 155, and 156 of equalsize. Each section 151, 152, 153, 154, 155, and 156 corresponds to aparticular bin 161, 162, 163, 164, 165, and 166, respectively. Theprimitives 2, 3, 4, 5, and 6 are stored in the bins 161-166 whichcorrespond to the sections 161-166 that the primitives 2, 3, 4, 5, and 6intersect. Furthermore, the primitives are stored in minimum y-valueorder. For example, the bin 163 includes primitive 4, 6, 2, 5, and 3, inthat order. It is determined whether any of the bins 161-166 can becombined without causing an overflow. Suppose three processors areavailable. Thus, a bin 161-166 can be combined with another bin 161-166if the combination 1405P has three or fewer primitives 2, 3, 4, 5, and6. If section 151 and 152 are combined, there are only two primitives 2and 3 present in the combined section. Similarly, if sections 154, 155,and 156 are combined, there will be three primitives 4, 5, and 6 presentin the combined section. As a result, bins 161 and 162 and bins 164,165, and 166 can be combined without violating the overflow parameter.It will thus be determined in step 144 that bins 161 and 162 and bins164, 165, and 166 can be combined. Consequently, the bins 161 and 162are combined to form bin the 167 and the bins 164-166 are combined toprovide the bin 168, using step 146. Note that the bin 163 includes fourprimitives, 2, 3, 4, and 5. Consequently, bin 163 will cause the systemto overflow even if it is not combined. In a preferred embodiment, bins163 will be treated separately, for example by splitting or overlayingportions of the bin 163 to be rendered separately. At least the bins167, 163, and 168 are thus the variable-sized bins provided forrendering.

[0043]FIG. 6A depicts a more detailed flow chart of a preferred versionof the first embodiment of a method 170 for providing the variable sizedbins. The primitives 2, 3, 4, 5, and 6 are stored in the appropriatebuckets of equal sized bins, via step 172. Each bin includes a leftbucket and a right bucket. A primitive 2, 3, 4, 5, or 6 is stored in aright bucket if the primitive 2, 3, 4, 5, or 6 crosses a right boundaryof a section corresponding to a particular bin. A primitive 2, 3, 4, 5,or 6 is stored in the left bucket if the primitive 2, 3, 4, 5, or 6 doesnot cross the right boundary of the section corresponding to theparticular bin. Thus, storing the primitives 2, 3, 4, 5, and 6 mayinclude storing the data for the primitives in the appropriate buckets.Step 172 also includes ordering the primitives 2, 3, 4, 5, and 6 in thebuckets based on the primitives' minimum y values. Thus, the primitives2, 3, 4, 5, and 6 are arranged from first to last in the appropriatebuckets, based upon the highest point in the display 150 for theprimitive. In addition, step 172 includes storing the top and bottomscans for each primitive. The top and bottom scans correspond to theminimum and maximum y-values for the primitive.

[0044] It is then determined if any of the bins overflow, via step 174.Thus, step 174 includes determining if any of the bins contain asufficient number of primitives to violate the overflow parameter.Preferably this is accomplished in one step after the primitives 2, 3,4, 5, and 6 have been stored in the appropriate bins. Step 174 is alsopreferably accomplished by using the top scan line and bottom scan linefor each primitive store in a bin to determined the whether the numberof primitives 2, 3, 4, 5, or 6 on a particular scan line of a bin isgreater than the overflow parameter. If the certain bins overflow, thenthese bins are treated separately, via step 176. In a preferredembodiment, step 176 includes overlaying the bins which overflow. Inanother embodiment, step 176 could include splitting the bins thatoverflow is splitting the bin will prevent the overflow. In any event,step 176 includes a mechanism which will allow those bins that overflow,such as the bin 163 depicted in FIG. 5C, to be processed preferablywithout causing an overflow of the system 50.

[0045] Referring back to FIG. 6A, a bin is selected as a current bin,via step 178. In a preferred embodiment, step 178 includes selecting abin as the current bin only if the bin has been determined not tooverflow in step 174. It is determined if the current bin can becombined with one or more other bins without the combinationoverflowing, via step 180. Preferably, at least one of the other bins isadjacent to the current bin and the other bins are mutually adjacent. Ifthe current bin cannot be combined without an overflow, the current binis considered to be one of the variable-sized bins. If the current bincannot be combined without an overflow, then it is determined if all ofthe desired bins have been attempted to be combined, via step 182.

[0046] If it is determined that the current bin can be combined, thenthe current bin is combined with one or more other bins to provide oneof the variable-sized bins, via step 184. The bin(s) with which thecurrent bin are combined with are those which were determined in step182. Preferably, the current bin is combined with other bin(s) such thata primitive in more than one bin only appears once in the variable-sizedbin that results from the combination. Step 182 is then returned to.Step 182 determines whether all of the desired bins have been attemptedto be combined. If not, then step 178 is returned to. If so, then adisplay list which orders the primitives variable-sized bin byvariable-sized bin is provided, via step 186. In one embodiment, step184 of combining the bins, is carried out by providing the display listin step 186. In such an embodiment, the primitives in the bins to becombined would be provided together in the display list withoutotherwise combining the bins.

[0047] To further explicate the method 170, refer to FIGS. 6B and 5C.FIG. 6B is a diagram depicting how bins are combined. FIG. 5C depictsthe sections 151, 152, 153, 154, 155, and 156 corresponding to the bins.The primitives 2, 3, 4, and 5 are stored in the bins 161′, 162′, 163′,164′, 165′, and 166′. The bins 161′, 162′, 163′, 164′, 165′, and 166′correspond to the sections 151, 152, 153, 154, 155, and 156,respectively. Because the primitives 2 and 3 cross the right boundary ofthe bin 161′ (the section 151), the primitives 2 and 3 are stored in theright bucket 182 of the bin 161′. Because there are no primitives in thedisplay 150 that intersect bin 161′ (the section 1521) but do not crossthe right boundary of the bin 161′ (the section 151), the left bucket181 of the bin 161′ is empty. Because the primitives 2 and 3 cross theright boundary of the bin 162′ (the section 152), the primitives 2 and 3are stored in the right bucket 184 of the bin 162′. Because there are noprimitives that intersect bin 162′ (the section 152) but do not crossthe right boundary of the bin 162′ (the section 152), the left bucket183 of the bin 162′ is empty. Because the primitives 4 and 5 cross theright boundary of the bin 163′ (the section 153), the primitives 4 and 5are stored in the right bucket 186 of the bin 163′. Because theprimitives 2 and 3 intersect bin 163′ (the section 153) but do not crossthe right boundary of the bin 163′ (the section 153), primitives 2 and 3are stored in the left bucket 185 of the bin 163′. Because theprimitives 4 and 5 cross the right boundary of the bin 164′ (the section154), the primitives 4 and 5 are stored in the right bucket 188 of thebin 164′. Because there are no primitives that intersect bin 164′ (thesection 154) but do not cross the right boundary of the bin 164′ (thesection 154), the left bucket 187 of the bin 164′ is empty. Because theprimitive 6 crosses the right boundary of the bin 165′ (the section155), the primitive 6 is stored in the right bucket 190 of the bin 165′.Because the primitives 4 and 5 intersect bin 165′ (the section 155) butdo not cross the right boundary of the bin 165′ (the section 155),primitives 4 and 5 are stored in the left bucket 189 of the bin 165′.Because no primitives cross the right boundary of the bin 166′ (thesection 156), the right bucket 192 of the bin 166′ is empty. Because theprimitive 6 intersects bin 166′ (the section 156) but does not cross theright boundary of the bin 166′ (the section 156), the primitive 6 isstored in the left bucket 181 of the bin 162′.

[0048] It is presumed that there are four processors in the processorblock 64 of FIG. 2.

[0049] Thus, the overflow parameter may be four. Referring back to FIGS.5A and 6B, none of the bins 161′-166′, or the corresponding sections151-156, include more than four primitives 2, 3, 4, 5, and 6.Consequently, none of the bins overflow. Thus, all of the bins 161′-166′are candidates to be combined. Because the overflow parameter is four,the bins 161′, 162′, 163′, and 164′ can be combined into bin 167′without overflowing. Thus, primitives 2, 3, 4, and 5 can be stored in asingle bin 167′ that corresponds to the bins 161′-164′ and, therefore,to sections 151-154. For the same reasons, bins 165′ and 166′ can becombined into a single bin 168′ without overflowing.

[0050] The bins 161′-166′ are also preferably combined such that theprimitives 2, 3, 4, and 5 are stored only once in each variable sizedbins 167′ and 168′. Preferably, this is accomplished by storing onlythose primitives which are in the left bucket for a bin, except for thelast bin that is being combined. For the last bin, those primitives inthe right bucket and the left bucket are combined. For example, thereare no primitives in the left bucket 181 or 183 for the bins 161′ and162′. Thus, no primitives are added. However, primitives 2 and 3 are inthe left bucket 185 for the bin 163′. Consequently, primitives 2 and 3are stored in the variable-sized bin 167′. However, the primitives 4 and5 are in the right bucket 186 and thus are not stored when the bin 163′is combined. However, the primitives 4 and 5 are in the right bucket 188for the last bin 164′ being combined. Thus, the primitive 4 and 5 arestored in the variable-sized bin 167′. Consequently, the variable-sizedbin 167′ includes primitives 4 and 5 in the right bucket 194 andprimitive 2 and 3 in the right bucket 193. Furthermore, the primitives2, 3, 4, and 5 are stored in order in the variable-sized bin 167′ basedon their minimum y-values. Note, however, that in an alternateembodiment, the variable-sized bin 167′ could include primitives 2 and 3in both the right bucket 194 and the left bucket 193 and primitives 4and 5 in the right bucket 194. In such a case, the right bucket 194would store the primitive 2 ahead of the primitive 3 in the left bucket193. Similarly, the right bucket 194 would store primitives 4, 2, 5, and3 in order because this arranges the primitives 2, 3, 4, and 5 inminimum y-value order.

[0051] Similarly, the variable-sized bin 168′ includes primitives 4, 5,and 6. When bin 165′ is combined, primitives 4 and 5 in the left bucket189 are stored in the left bucket 195 of the variable-sized bin 168′.The primitive 6 is not stored because it is in the right bucket 190 ofthe bin 165′. However, when the bin 165′ is combined, the primitive 6 isstored because it is in the left bucket 191 of the bin 166′. If therewere primitives in the right bucket 192, those primitives would havebeen stored in the variable-sized bin 168′ because the bin 166′ is thelast bin being combined.

[0052] A display list is then provided from the variable-sized bins 167′and 168′. The display list preferably provides the primitivesvariable-sized bin by variable-sized bin and preferably orders theprimitives in minimum y-value order. Consequently, the display listwould include primitives 4, 2, 5, and 3 then primitives 4, 6, and 5. Theportions of primitives 4, 2, 5, and 3 intersecting the variable-sizedbin 167′ (intersecting sections 151, 152, 153, and 154) are renderedfirst, followed by the portions of primitives 4, 6, and 5 intersectingthe variable sized bin 168′ (intersecting sections 155 and 156). Thedisplay list allows the primitives in a scan line to be provided inparallel to the processors of the block of processors in FIG. 3 and thepixels in each of the variable-sized bins 167′ and 168′ pixel by pixelin raster order.

[0053] Because the methods 100, 140, and 170 render the graphical imagevariable-sized bin by variable-sized bin, the efficiency of rendering isimproved. Each variable-sized bin either does not overflow or is treatedseparately. In either case, each variable-sized bin can be renderedwithout causing an overflow in the computer graphics system, such as thesystem 50. Therefore, the primitives in a scan line for eachvariable-sized bin can be provided in parallel to processors in theblock of processors 64. Each variable-sized bin can, therefore, berendered pixel-by pixel in raster order without overflowing or slowingthe system 50. Consequently, efficiency of providing graphical images isimproved.

[0054]FIG. 7A depicts a more detailed flow chart of a second embodimentof a method 200 in accordance with the present invention for providingvariable-sized bins. The method 200 is used to render a graphical imagethat is part of a series of graphical images. Each graphical image inthe series in known as a frame. A plurality of bins is determined basedon a previous frame, via step 202. Preferably, the plurality of bins wasconsidered to be optimal under some set of criteria for rendering theprevious frame. In a preferred embodiment, a set of bins is optimal ifthe previous frame can be rendered using the smallest total number ofbins and having the smallest number of bins which violate the overflowparameter. Thus, each of the plurality of bins provided in step 202 canpreferably vary in size. Also in a preferred embodiment, the previousframe is the frame immediately previous to the frame currently beingrendered. In one embodiment, the plurality of variable-sized bins wasactually used to render the previous frame. Thus, the variable sizedbins are determined when the previous frame was rendered. In anotherembodiment, the plurality of variable-sized bins was not used to renderthe previous frame, but are determined between frames.

[0055] The plurality of variable-sized bins that store the primitivesare then provided, via step 204, based on the plurality of binsdetermined in step 202. In one embodiment, the plurality ofvariable-sized bins is the same as the bins determined in step 202. Inanother embodiment, the plurality of variable-sized bins is providedbased on the bins determined in step 202. For example, portions of orall of some number of the bins determined in step 202 may be combined orsplit to provide the variable-sized bins, as discussed below. Step 202preferably includes storing the primitives in the variable-sized bins inorder based on the minimum y-value of the primitives. Step 202 alsopreferably includes storing the top and bottom scan values.

[0056]FIG. 7B depicts the display 210 having a plurality of sections211, 212, 213, 214, 215, 216, and 217 corresponding to a plurality ofbins which were determined based on a previous frame. FIG. 7C depictsthe bins 221, 222, 223, 224, 225, 226, and 227 corresponding to thesections 211, 212, 213, 214, 215, 216, and 217, respectively. The bins221-227 store the primitives 2, 3, 4, 5, and 6. In one embodiment of themethod 200, the bins 221-227 are used as the variable-sized bins in thestep 204. In another embodiment of the method 200, the variable-sizedbins are provided based on the bins 221-227, for example by combiningportions of one or more bins 221-227 or by splitting one or more of thebins 221-227. Such an embodiment might be considered to be a combinationof the method 200 and the method 140 or 170.

[0057]FIG. 8A depicts one version of the second embodiment of a method230 in accordance with the present invention. The method 230 can beconsidered to be a combination of the method 200 and the method 170. Theplurality of bins is determined based on a previous frame, via step 232.Via step 234, the primitives 2, 3, 4, 5, and 6 are stored in theappropriate buckets of the bins which were determined in step 232. Eachbin includes a left bucket and a right bucket. A primitive 2, 3, 4, 5,or 6 is stored in a right bucket if the primitive 2, 3, 4, 5, or 6crosses a right boundary of a section corresponding to a particular bin.A primitive 2, 3, 4, 5, or 6 is stored in the left bucket if theprimitive 2, 3, 4, 5, or 6 does not cross the right boundary of thesection corresponding to the particular bin. Thus, storing theprimitives 2, 3, 4, 5, and 6 may include storing the data for theprimitives in the appropriate buckets. Step 234 also includes orderingthe primitives 2, 3, 4, 5, and 6 in the buckets based on the primitives'minimum y-values. Thus, the primitives 2, 3, 4, 5, and 6 are arrangedfrom first to last in the appropriate buckets, based upon the highestpoint in the display 150 for the primitive. In addition, step 234includes storing the top and bottom scans for each primitive. The topand bottom scans correspond to the minimum and maximum y-values for theprimitive.

[0058] It is then determined if any of the bins overflow, via step 236.Thus, step 236 includes determining if any of the bins contain asufficient number of primitives to violate the overflow parameter.Preferably this is accomplished in one step after the primitives 2, 3,4, 5, and 6 have been stored in the appropriate bins. Step 236 is alsopreferably accomplished by using the top scan line and bottom scan linefor each primitive store in a bin to determined the whether the numberof primitives 2, 3, 4, 5, or 6 on a particular scan line of a bin isgreater than the overflow parameter. If certain bins overflow, thenthese bins are treated separately, via step 238. In a preferredembodiment, step 238 includes overlaying the bins which overflow. Inanother embodiment, step 238 could include splitting the bins thatoverflow is splitting the bin will prevent the overflow. In any event,step 238 includes a mechanism which will allow those bins that overflowto be processed preferably without causing an overflow of the system 50.

[0059] Referring back to FIG. 8A, a bin is selected as a current bin,via step 240. In a preferred embodiment, step 240 includes selecting abin as the current bin only if the bin has been determined not tooverflow in step 236. It is determined if the current bin can becombined with one or more other bins without the combinationoverflowing, via step 242. Preferably, at least one of the other bins isadjacent to the current bin and the other bins are mutually adjacent. Ifthe current bin cannot be combined without an overflow, the current binis considered to be one of the variable-sized bins. If the current bincannot be combined without an overflow, then it is determined if all ofthe desired bins have been attempted to be combined, via step 246.

[0060] If it is determined that the current bin can be combined, thenthe current bin is combined with one or more other bins to provide oneof the variable-sized bins, via step 244. The bin(s) with which thecurrent bin is combined with are those which were determined in step242. Preferably, the current bin is combined with other bin(s) such thata primitive in more than one bin only appears once in the variable-sizedbin that results from the combination. Step 246 is then returned to.Step 246 determines whether all of the desired bins have been attemptedto be combined. If not, then step 240 is returned to. If so, then adisplay list which orders the primitives variable-sized bin byvariable-sized bin is provided, via step 248. In one embodiment, step244 is performed in step 248. In such an embodiment, providing thedisplay list may also effectively combine the bins by providing theprimitives in the bins to be combined together in the display list.

[0061] To further explicate the method 230, refer to FIGS. 8B and 7B.FIG. 8B is a diagram depicting how bins are combined. FIG. 7B depictsthe display 210 having a plurality of sections 211, 212, 213, 214, 215,216, and 217 corresponding to a plurality of bins which were determinedbased on a previous frame. Referring to FIGS. 7B and 8B, the primitives2, 3, 4, and 5 are stored in the bins 221′, 222′, 223′, 224′, 225′,226′, and 227′. The bins 221′, 222′, 223′, 224′, 225′, 226′, and 227′correspond to the sections 211, 212, 213, 214, 215, 216, and 217,respectively. Because the primitives 2 and 3 cross the right boundary ofthe bin 221′ (the section 211), the primitives 2 and 3 are stored in theright bucket 252 of the bin 221′. Because there are no primitives in thedisplay 210 that intersect bin 251′ (the section 211) but do not crossthe right boundary of the bin 221′ (the section 211), the left bucket251 of the bin 221′ is empty. Because the primitives 2 and 3 cross theright boundary of the bin 222′ (the section 212), the primitives 2 and 3are stored in the right bucket 254 of the bin 222′. Because there are noprimitives that intersect bin 222′ (the section 212) but do not crossthe right boundary of the bin 222′ (the section 212), the left bucket253 of the bin 162′ is empty. Because there are no primitives in the bin223′ (the section 213), the left bucket 255 and right bucket 256 of thebin 223′ are empty. Because the primitives 2 and 3 intersect but do notcross the right boundary of the bin 224; (the section 214), theprimitives 2 and 3 are stored in the left bucket 257 of the bin 224′.Because there are no primitives that intersect bin 224′ (the section214) and cross the right boundary of the bin 224′ (the section 214), theright bucket 258 of the bin 224′ is empty. Because the primitives 2, 4,and 6 cross the right boundary of the bin 225′ (the section 215), theprimitives 4, 5, and 6 are stored in the right bucket 260 of the bin225′. Because no primitives intersect bin 225′ (the section 215) but donot cross the right boundary of the bin 225′ (the section 215), noprimitives are stored in the left bucket 259 of the bin 225′. Because noprimitives cross the right boundary of the bin 226′ (the section 216),the right bucket 262 of the bin 226′ is empty. Because the primitives 4and 5 intersect the bin 226′ (the section 216) but do not cross theright boundary of the bin 226′ (the section 216), the primitives 4 and 5are stored in the left bucket 261 of the bin 226′. Because no primitivescross the right boundary of the bin 227′ (the section 217), the rightbucket 264 of the bin 227′ is empty. Because the primitives 4 and 6intersect the bin 227′ (the section 217) but do not cross the rightboundary of the bin 227′ (the section 217), the primitives 4 and 6 arestored in the left bucket 263 of the bin 227′.

[0062] It is presumed that there are three processors in the processorblock 64 of FIG. 2. Thus, the overflow parameter may be three. Referringback to FIGS. 7B and 8B, none of the bins 221′-227′, or thecorresponding sections 211-217, include more than three primitives 2, 3,4, 5, and 6. Consequently, none of the bins overflow. Thus, all of thebins 221′-227′ are candidates to be combined. Because the overflowparameter is three, the bins 211′, 212′, 213′, and 214′ can be combinedinto bin 228′ without overflowing. Thus, primitives 2 and 3 can bestored in a single bin 228′ that corresponds to the bins 221′-224′ and,therefore, to sections 211-214. For the same reasons, bins 225′, 226′,and 227′ can be combined into a single bin 229′ without overflowing.

[0063] The bins 221′-227′ are also preferably combined such that theprimitives 2, 3, 4, and 5 are stored only once in each variable sizedbins 228′ and 229′. Preferably, this is accomplished by storing onlythose primitives which are in the left bucket for a bin, except for thelast bin that is being combined. For the last bin, those primitives inthe right bucket and the left bucket are combined. For example, thereare no primitives in the left bucket 251, 253, or 255 for the bins 221′,222′, and 223′. Thus, no primitives are added. However, primitives 2 and3 are in the left bucket 257 for the bin 224′. Consequently, primitives2 and 3 are stored in the left bucket 265 of the variable-sized bin228′. Furthermore, there are no primitives in the right buckets 256 and258 of the last bins 223′ and 224′ being combined. Thus, no otherprimitives are stored in the variable-sized bin 228′. Consequently, thevariable-sized bin 228′ includes primitives 2 and 3 in the left bucket265 and no primitives in the right bucket 266. Furthermore, theprimitives 2 and 3 are stored in order in the variable-sized bin 228′based on their minimum y-values. Note, however, that in an alternateembodiment, the variable-sized bin 228′ could include primitives 2 and 3in both the right bucket 266 and the left bucket 265. Providing thedisplay list might then combine the bins 221′, 222′, 223′, and 224′. Inan alternate embodiment, no combining is provided until the display listis provided. In such an embodiment, the display list still combines thebins 221′, 222′, 223′, and 224′.

[0064] Similarly, the variable-sized bin 229′ includes primitives 4, 5,and 6. When bin 225′ is combined, no primitives are added to the buckets267 and 268 of the variable-sized bin 229′ because there are noprimitives in the left bucket 259 of the bin 225′. However, when thebins 226′ and 227′ are combined, the primitives 4, 5, and 6 are storedbecause they are in the left buckets 261 and 263 of the bins 226′ and227′, respectively. If there were primitives in the right buckets 262and 264, those primitives would have been stored in the variable-sizedbin 229′ because the bin 226′ and 227′ are the last bins being combined.Note, however, that in an alternate embodiment, the variable-sized bin229′ could include primitives 4, 5, and 6 in both the right bucket 267and the left bucket 268. Providing the display list might then combinethe bins 225′, 226′, and 227′. In an alternate embodiment, no combiningis provided until the display list is provided. In such an embodiment,the display list still combines the bins 225′, 226′, and 227′.

[0065] A display list is then provided from the variable-sized bins 228′and 229′. The display list preferably provides the primitivesvariable-sized bin by variable-sized bin and preferably orders theprimitives in minimum y-value order. Consequently, the display listwould include primitives 2 and 3 then primitives 4, 6, and 5. Theportions of primitives 2 and 3 intersecting the variable-sized bin 228′(intersecting sections 211, 212, 213, and 214) are rendered first,followed by the portions of primitives 4, 6, and 5 intersecting thevariable sized bin 229′ (intersecting sections 215, 216, and 217). Thedisplay list allows the primitives in a scan line to be provided inparallel to the processors of the block of processors in FIG. 3 and thepixels in each of the variable-sized bins 228′ and 229′ pixel by pixelin raster order.

[0066] Because the methods 200 and 230 render the graphical imagevariable-sized bin by variable-sized bin, the efficiency of rendering isimproved. Each variable-sized bin either does not overflow or is treatedseparately. In either case, each variable-sized bin can be renderedwithout causing an overflow in the computer graphics system, such as thesystem 50. Therefore, the primitives in a scan line for eachvariable-sized bin can be provided in parallel to processors in theblock of processors 64. Each variable-sized bin can, therefore, berendered pixel-by pixel in raster order without overflowing or slowingthe system 50. Consequently, efficiency of providing graphical images isimproved.

[0067] A method and system has been disclosed for more efficientlyrendering a graphical image. Although the present invention has beendescribed in accordance with the embodiments shown, one of ordinaryskill in the art will readily recognize that there could be variationsto the embodiments and those variations would be within the spirit andscope of the present invention. Accordingly, many modifications may bemade by one of ordinary skill in the art without departing from thespirit and scope of the appended claims.

What is claimed is:
 1. A method for providing a graphical image on adisplay of a system, the graphical image being provided from datadescribing a plurality of primitives, the display including a pluralityof pixels, the method comprising the steps of: (a) providing a pluralityof variable-sized bins containing the plurality of primitives; and (b)rendering the plurality of primitives by rendering each of the pluralityof variable-sized bins variable-sized bin by variable-sized bin.
 2. Themethod of claim 1 wherein the system includes a plurality of processorsfor processing a portion of the plurality of primitives in parallel, andwherein the variable-sized bin providing step (a) further includes thesteps of: (a1) storing the plurality of primitives in a plurality ofbins; (a2) determining if a part of a portion of the plurality of binscan be combined without causing the plurality of processors to overflow;and (a3) combining the part of the portion of plurality of bins toprovide the plurality of variable-sized bins if the part of the portionof the plurality of bins can be combined without causing the pluralityof processors to overflow; wherein the plurality of variable-sized binscan include fewer bins than the plurality of bins.
 3. The method ofclaim 2 wherein the combining step (a3) further includes the steps of:(a3i) combining the part of the portion of the plurality of bins so thata particular primitive of the plurality of primitives is provided onlyonce for a corresponding variable-sized bin of the plurality ofvariable-sized bins.
 4. The method of claim 2 wherein the variable-sizedbin providing step (a) further includes the steps of: (a4) providing adisplay list containing the plurality of primitives, the display listincluding the plurality of primitives ordered according to the pluralityof variable-sized bins, wherein a particular primitive of the pluralityof primitives is provided to the display list only once for acorresponding variable-sized bin of the plurality of variable-sizedbins.
 5. The method of claim 2 wherein each of the plurality of binsincludes a first boundary, wherein each of the plurality of primitivesintersects a second portion of the plurality of bins, and wherein thestoring step (a1) further includes the step of: (a1i) storing each ofthe plurality of primitives in the second portion of the plurality ofbins based on whether the first boundary is crossed.
 6. The method ofclaim 5 wherein each of the plurality of primitives includes a minimum yvalue, a top scan line, and bottom scan line, and wherein the storingstep (a1) further includes the step of: (a1ii) storing each of theplurality of primitives in the second portion of the plurality of binsin an order based on the minimum y value; and (a1iii) storing the topscan line and the bottom scan line for each of the plurality ofprimitives in the second portion of the plurality of bins.
 7. The methodof claim 1 wherein the variable-sized bin providing step (a) furtherincludes the steps of: (a1) determining a plurality of bins for aprevious frame; and (a2) providing the plurality of bins containing theplurality of primitives.
 8. The method of claim 7 wherein the systemfurther includes a plurality of processors for processing a portion ofthe plurality of primitives in parallel and wherein the variable-sizedbin providing step (a) further includes the step of: (a3) storing theplurality of primitives in the plurality of bins; (a4) determining if apart of a portion of the plurality of bins can be combined withoutcausing the plurality of processors to overflow; and (a5) combining thepart of the portion of the plurality of bins to provide the plurality ofvariable-sized bins if the part of the portion of the plurality of binscan be combined without causing the plurality of processors to overflow;wherein the plurality of variable-sized bins can include fewer bins thanthe plurality of bins.
 9. The method of claim 8 wherein the combiningstep (a5) further includes the steps of: (a5i) combining the part of theportion of the plurality of bins so that a particular primitive of theplurality of primitives is provided only once for a correspondingvariable-sized bin of the plurality of variable-sized bins.
 10. Themethod of claim 8 wherein the variable-sized bin providing step (a)further includes the steps of: (a6) providing a display list containingthe plurality of primitives, the display list including the portion ofthe plurality of primitives for each of the plurality of variable-sizedbins ordered variable-sized bin by variable-sized bin, wherein aparticular primitive of the plurality of primitives is provided to thedisplay list only once for a corresponding variable-sized bin of theplurality of variable-sized bins.
 11. The method of claim 7 wherein thesystem further includes a plurality of processors for processing aportion of the plurality of primitives in parallel and wherein thevariable-sized bin providing step (a) further includes the step of: (a3)determining if a portion of the plurality of bins causes the pluralityof processors to overflow; and (a4) splitting each bin of the portion ofthe plurality of bins into two bins.
 12. The method of claim 1 wherein asecond portion of the plurality of primitives intersects each of aportion of the plurality of variable-sized bins, wherein the pluralityof primitives include a plurality of fragments intersecting each pixelof a portion of the plurality of pixels and wherein the rendering step(b) further includes the steps of: (b1) rendering each of the pluralityof variable-sized bins pixel by pixel in raster order, the plurality offragments being provided pixel by pixel for the portion of the pluralityof pixels.
 13. A computer-readable medium containing a program forproviding a graphical image on a display of a system, the graphicalimage being provided from data describing a plurality of primitives, thedisplay including a plurality of pixels, the program includinginstructions for: (a) providing a plurality of variable-sized binscontaining the plurality of primitives; and (b) rendering the pluralityof primitives by rendering each of the plurality of variable-sized binsvariable-sized bin by variable-sized bin.
 14. The computer-readablemedium of claim 13 wherein the system includes a plurality of processorsfor processing a portion of the plurality of primitives in parallel, andwherein the variable-sized bin providing instructions (a) furtherincludes instructions for: (a1) storing the plurality of primitives in aplurality of bins; (a2) determining if a part of a portion of theplurality of bins can be combined without causing the plurality ofprocessors to overflow; and (a3) combining the part of the portion ofthe plurality of bins if the portion of plurality of bins can becombined without causing the plurality of processors to overflow;wherein the plurality of variable-sized bins can include fewer bins thanthe plurality of bins.
 15. The computer-readable medium of claim 14wherein the combining instructions (a3) further includes instructionsfor: (a3i) combining the part of the portion of the plurality of bins sothat a particular primitive of the plurality of primitives is providedonly once for a corresponding variable-sized bin of the plurality ofvariable-sized bins.
 16. The computer-readable medium of claim 14wherein the variable-sized bin providing instructions (a) furtherincludes instructions for: (a4) providing a display list containing theplurality of primitives, the display list including the plurality ofprimitives ordered according to the plurality of variable-sized bins,wherein a particular primitive of the plurality of primitives isprovided to the display list only once for a correspondingvariable-sized bin of the plurality of variable-sized bins.
 17. Thecomputer-readable medium of claim 14 wherein each of the plurality ofbins includes a first boundary, wherein each of the plurality ofprimitives intersects a second portion of the plurality of bins, andwherein the storing instructions (a1) further includes instructions for:(a1i) storing each of the plurality of primitives in the second portionof the plurality of bins based on whether the first boundary is crossed.18. The computer-readable medium of claim 17 wherein each of theplurality of primitives includes a minimum y value, a top scan line, andbottom scan line, and wherein the storing instructions (a1) furtherincludes instructions for: (a1ii) storing each of the plurality ofprimitives in the second portion of the plurality of bins in an orderbased on the minimum y value; and (a1iii) storing the top scan line andthe bottom scan line for each of the plurality of primitives in thesecond portion of the plurality of bins.
 19. The computer-readablemedium of claim 13 wherein the variable-sized bin providing instructions(a) further includes instructions for: (a1) determining a plurality ofbins for a previous frame; and (a2) providing the plurality of binscontaining the plurality of primitives.
 20. The computer-readable mediumof claim 19 wherein the system further includes a plurality ofprocessors for processing a portion of the plurality of primitives inparallel and wherein the variable-sized bin providing instructions (a)further includes instructions for: (a3) storing the plurality ofprimitives in the plurality of bins; (a4) determining if a part of aportion of the plurality of bins can be combined without causing theplurality of processors to overflow; and (a5) combining the part of theportion of the plurality of bins if the part of the portion of theplurality of bins can be combined without causing the plurality ofprocessors to overflow; wherein the plurality of variable-sized bins caninclude fewer bins than the plurality of bins.
 21. The computer-readablemedium of claim 20 wherein the combining instructions (a5) furtherincludes instructions for: (a5i) combining the part of the portion ofthe plurality of bins so that a particular primitive of the portion ofthe plurality of primitives is provided only once for a correspondingvariable-sized bin of the plurality of variable-sized bins.
 22. Thecomputer-readable medium of claim 20 wherein a portion of the pluralityof primitives intersect each of a second portion of the plurality ofvariable-sized bins and wherein the variable-sized bin providinginstructions (a) further includes instructions for: (a6) providing adisplay list containing the plurality of primitives, the display listincluding the portion of the plurality of primitives for each of theplurality of variable-sized bins ordered variable-sized bin byvariable-sized bin, wherein a particular primitive of the portion of theplurality of primitives is provided to the display list only once for acorresponding variable-sized bin of the plurality of variable-sizedbins.
 23. The computer-readable medium of claim 19 wherein the systemfurther includes a plurality of processors for processing a portion ofthe plurality of primitives in parallel and wherein the variable-sizedbin providing instructions (a) further includes instructions for: (a3)determining if a portion of the plurality of bins causes the pluralityof processors to overflow; and (a4) splitting each bin of the portion ofthe plurality of bins into two bins.
 24. The computer-readable medium ofclaim 13 wherein a second portion of the plurality of primitivesintersects each of a portion of the plurality of variable-sized bins,wherein the plurality of primitives include a plurality of fragmentsintersecting each pixel of a portion of the plurality of pixels andwherein the rendering instructions (b) further includes instructionsfor: (b1) rendering each of the plurality of variable-sized bins pixelby pixel in raster order, the plurality of fragments being providedpixel by pixel for the portion of the plurality of pixels.
 25. A systemfor providing a graphical image on a display, the graphical image beingprovided from data describing a plurality of primitives, the displayincluding a plurality of pixels, the system comprising: means providinga plurality of variable-sized bins containing the plurality ofprimitives, the plurality of bins having a variable size; and means,coupled with the providing means, for rendering the plurality ofprimitives by rendering each of the plurality of variable-sized binsvariable-sized bin by variable-sized bin.
 26. The system of claim 25wherein the system includes a plurality of processors for processing aportion of the plurality of primitives in parallel, and wherein thevariable-sized bin providing means further includes: means for storingthe plurality of primitives in a plurality of bins; means fordetermining if a part of a portion of the plurality of bins can becombined without causing the plurality of processors to overflow; andmeans for combining the part of the portion of the plurality of bins ifthe part of the portion of the plurality of bins can be combined withoutcausing the plurality of processors to overflow; wherein the pluralityof variable-sized bins can include fewer bins than the plurality ofbins.
 27. The system of claim 26 wherein the variable-sized binproviding means further includes: means for combining the part of theportion of the plurality of bins so that a particular primitive of theplurality of primitives is provided only once for a correspondingvariable-sized bin of the plurality of variable-sized bins.
 28. Thesystem of claim 26 wherein the variable-sized bin providing meansfurther includes: means for providing a display list containing theplurality of primitives, the display list including the plurality ofprimitives ordered according to the plurality of variable-sized bins,wherein a particular primitive of the plurality of primitives isprovided to the display list only once for a correspondingvariable-sized bin of the plurality of variable-sized bins.
 29. Thesystem of claim 25 wherein the variable-sized bin providing meansfurther includes: means for determining a plurality of bins for aprevious frame; and means for providing the plurality of bins containingthe plurality of primitives.
 30. The system of claim 29 system furtherincluding a plurality of processors for processing a portion of theplurality of primitives in parallel and wherein the variable-sized binproviding means further includes: means for storing the plurality ofprimitives in the plurality of bins; means for determining if a part ofa portion of the plurality of bins can be combined without causing theplurality of processors to overflow; and means for combining the part ofthe portion of the plurality of bins if the portion of the plurality ofbins can be combined without causing the plurality of processors tooverflow; wherein the plurality of variable-sized bins can include fewerbins than the plurality of bins.
 31. The system of claim 30 furthercomprising a plurality of processors for processing a portion of theplurality of primitives in parallel and wherein the variable-sized binproviding means further includes: means for determining if a portion ofthe plurality of bins causes the plurality of processors to overflow;and means for splitting each bin of the portion of the plurality of binsinto two bins.